// 修饰符(类中的成员的修饰符):主要是描述类中的成员(属性，构造函数,方法)的可访问性
// 类中的成员都有自己默认的访问修饰符 public
// public修饰符 ,类中成员默认的修饰符,代表的是公共的,任何位置都可以访问类中的成员(公共)
// private修饰符,类中的成员如果使用了private来修饰,那么外部是无法访问这个成员数据的,当然，子类也是无法访问该成员数据的(私有)
// protected修饰符,类中的成员如果使用protected来修饰,那么外部是无法访问这个成员数据的，当然，子类是可以访问该成员数据的(受保护的)
;(() => {
  // 定义一个类
  class Person {
    // 属性 public 修饰属性 成员
    public name: string
    // 属性 private 修饰属性 成员
    // private name: string
    // 属性 protected 修饰属性 成员
    // protected name: string
    // public name: string
    // 构造函数
    public constructor(name: string) {
      // 更新属性
      this.name = name
    }
    // 方法
    public eat() {
      console.log('哈哈哈哈哈哈哈说', this.name)
    }
  }
  class Student extends Person {
    constructor(name: string) {
      super(name)
    }
    play() {
      console.log(this.name)
    }
  }
  // 实例化对象
  const per = new Person('胭脂')
  // 类的外部可以访问类中的属性成员
  console.log(per.name)
  per.eat()
  // 实例化子类
  const student = new Student('嘿嘿')
  console.log(student.name)
})()
